home *** CD-ROM | disk | FTP | other *** search
/ Graphics & Sound Program…ng Techniques for the Mac / Graphics and Sound Programming Techniques for the Mac.iso / M&T Graphics & Sound Examples / Symantec Versions / C06 QuickDraw GX / P02 QD GX Intro / QDGXIntro.c next >
Encoding:
C/C++ Source or Header  |  1995-09-01  |  3.7 KB  |  163 lines  |  [TEXT/KAHL]

  1. //____________________________________________________________
  2. //    QDGXIntro.c
  3. //
  4. //    Copyright © Dan Parks Sydow, 1995
  5. //    From the book:
  6. //    "Graphics and Sound Programming Techniques for the Mac",
  7. //    M&T Books, 1995
  8.  
  9. //____________________________________________________________
  10.  
  11.  
  12. #include "PrintingManager.h"      // defines the Gestalt selector code gestaltGXPrintingMgrVersion
  13. #include "graphics macintosh.h"   // defines the Gestalt selector code gestaltGraphicsVersion
  14. #include "graphics libraries.h"   // prototypes for several GX functions
  15.  
  16.  
  17. //____________________________________________________________
  18.  
  19. Boolean  IsQuickDrawGXAvailable( void );
  20. void     InitializeToolbox( void );
  21. void     InitializeQuickDrawGX( void );
  22. void     OpenDisplayWindow( void );
  23. void     CleanUpAndQuit( void );
  24. void     CleanUpQuickDrawGXandQuit( void );
  25.  
  26.  
  27. //____________________________________________________________
  28.  
  29. #define     kGXClientHeapSizeBytes    150 * 1024
  30.  
  31.  
  32. //____________________________________________________________
  33.  
  34. gxGraphicsClient  gGXClient;
  35. Boolean           gQuickDrawGXPresent;
  36. WindowPtr         gDisplayWindow = nil;
  37. Boolean           gDone = false;
  38.  
  39.  
  40. //____________________________________________________________
  41.  
  42. void  main( void )
  43. {
  44.    InitializeToolbox();
  45.  
  46.    gQuickDrawGXPresent = IsQuickDrawGXAvailable();
  47.    if ( gQuickDrawGXPresent == true )
  48.       InitializeQuickDrawGX();
  49.  
  50.    OpenDisplayWindow();
  51.          
  52.    while ( gDone == false )
  53.    {
  54.       if ( Button() )
  55.       {
  56.          if ( gQuickDrawGXPresent == true )   
  57.             CleanUpQuickDrawGXandQuit();
  58.          else
  59.             CleanUpAndQuit();
  60.       }
  61.    }      
  62. }
  63.  
  64.  
  65. //____________________________________________________________
  66.  
  67. Boolean  IsQuickDrawGXAvailable( void )
  68. {
  69.    OSErr  theError;
  70.    long   theResult;
  71.    
  72.    theError = Gestalt( gestaltGraphicsVersion, &theResult );
  73.    if ( theError != noErr )
  74.       return ( false );
  75.  
  76.    theError = Gestalt( gestaltGXPrintingMgrVersion, &theResult );
  77.    if ( theError != noErr )
  78.       return ( false );
  79.       
  80.    return ( true );
  81. }
  82.  
  83.  
  84. //____________________________________________________________
  85.  
  86. void  InitializeQuickDrawGX( void )
  87. {
  88.    gxGraphicsError  theGXgraphicsError;
  89.    OSErr            theGXprintError;      
  90.    
  91.    gGXClient = GXNewGraphicsClient( nil, kGXClientHeapSizeBytes, 0L );
  92.  
  93.    GXEnterGraphics();
  94.    theGXgraphicsError = GXGetGraphicsError( nil );
  95.    if ( theGXgraphicsError == out_of_memory )
  96.       ExitToShell();
  97.  
  98.    theGXprintError = GXInitPrinting();
  99.    if ( theGXprintError != noErr )
  100.       ExitToShell();
  101. }
  102.  
  103.  
  104. //____________________________________________________________
  105.  
  106. void  OpenDisplayWindow( void )
  107. {
  108.    gDisplayWindow = GetNewCWindow( 128, nil, (WindowPtr)-1L );
  109.    ShowWindow( gDisplayWindow );
  110.    SetPort( gDisplayWindow );
  111.    MoveTo( 20, 20 );
  112.  
  113.    if ( gQuickDrawGXPresent == true )   
  114.       DrawString( "\pQuickDraw GX is present and enabled" );
  115.    else
  116.       DrawString( "\pQuickDraw GX not present or not enabled" );
  117. }
  118.  
  119.  
  120. //____________________________________________________________
  121.  
  122. void  CleanUpQuickDrawGXandQuit( void )
  123. {
  124.    OSErr  theGXprintError;      
  125.  
  126.    if ( gDisplayWindow != nil )
  127.       DisposeWindow( gDisplayWindow );  
  128.        
  129.    theGXprintError = GXExitPrinting();
  130.  
  131.    GXExitGraphics();
  132.    
  133.    GXDisposeGraphicsClient( gGXClient ); 
  134.  
  135.    gDone = true;
  136. }
  137.  
  138.  
  139. //____________________________________________________________
  140.  
  141. void  CleanUpAndQuit( void )
  142. {
  143.    if ( gDisplayWindow != nil )
  144.       DisposeWindow( gDisplayWindow );  
  145.        
  146.    gDone = true;
  147. }
  148.  
  149.  
  150. //____________________________________________________________
  151.  
  152. void  InitializeToolbox( void )
  153. {
  154.    InitGraf( &qd.thePort );
  155.    InitFonts();
  156.    InitWindows();
  157.    InitMenus();
  158.    TEInit();
  159.    InitDialogs( 0L );
  160.    FlushEvents( everyEvent, 0 );
  161.    InitCursor();
  162. }
  163.